﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="IDocumentService.cs" company="DST Nexdox">
//   Copyright (c) DST Nexdox. All rights reserved.
// </copyright>
// <summary>
//   Defines the IDocumentService type.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace ServiceInterfaces
{
  using System;
  using System.Collections.Generic;
  using ClientProxies.ArchiveServiceReference;
  using Entities;

  public interface IDocumentService
  {
    PagedResult<IndexedDocumentData> GetDocuments(Int32 startRow, Int32 endRow, String grid, Boolean filterHouseHolding, Boolean filterUnapproved, Boolean filterApproved);

    PagedResult<IndexedDocumentData> GetDocuments(
      Int32 pageNumber,
      Int32 numberOfItems,
      String docType,
      String subDocType,
      String addresseeSubType,
      String accountNumber,
      String mailingName,
      IList<String> managementCompanies,
      String investorReference,
      DateTime? processingDateFrom,
      DateTime? processingDateTo,
      String primaryHolder,
      String agentReference,
      String addresseePostCode,
      String emailAddress,
      String faxNumber,
      DateTime? contractDate,
      DateTime? paymentDate,
      String documentNumber);

    Byte[] GetDocumentStream(String documentId);

    Document GetDocument(String documentId);

    IEnumerable<Document> GetDocuments(IEnumerable<String> documentIds);

    IEnumerable<Document> GetDocuments(IEnumerable<Int32> ids);

    void AddDocument(String documentId, Int32 docTypeId, Int32 subDocTypeId, Int32 manCoId, Int32? gridRunId, String mailPrintFlag);

    void AddDocument(String documentId, String docType, String subDocType, String manCo, Int32? gridRunId);

    IList<Document> GetDocuments(String grid);

    Int32 GetDocumentCount(String grid);

    IList<Document> GetDocumentsWithApprovalAndRejectionEntities(String grid);

    IList<Document> GetDocumentsWithApprovalRejectionAndHouseHoldEntities(String grid);

    IList<Document> GetUnApprovedDocuments(String grid);

    IList<Document> GetApprovedDocuments(String grid);

    Int32 GetApprovedDocumentsCount(String grid);

    Int32 GetUnApprovedDocumentsCount(String grid);

    IList<KpiReportData> GetDocuments(Int32 mancoId, DateTime startDate, DateTime endDate);

    IList<Document> GetDocumentsForBasket(String cartId);

    IList<Document> GetApprovedAndNotExported();

    void UpdateAsHouseheld(Int32 documentId, Int32 houseHoldingRunId);

    void UpdateAsHouseheld(IEnumerable<Int32> docIds, Int32 houseHoldingRunId);
  }
}
